#include <my_header.h>

/* Usage:  */
#if 0
信号递送过程中，产生了另一个同类信号会怎么样？产生了另两个、三个、多个同类信号会怎么样？
写代码验证一下你的想法。说明mask和pending如何变化。（如果想通过代码深入论证， 
需要基于我们今天提到的全程屏蔽mask的原理， 以及还没有讲的一个
函数：获取当前进程‘未决信号‘的函数sigpending（可以提前看一下文档上有记录），    ）
#endif

void func(int num){

    printf("signal %d begin \n", num);
    sleep(10);

    sigset_t set;
    sigemptyset(&set);
    sigpending(&set);
    if(sigismember(&set, 2)){
        printf("2号信号未决 \n");
    }
    sigemptyset(&set);
    sigset_t oldset;
    sigemptyset(&oldset);
    // 目的: 获取当前的mask掩码状态 (通过 oldset )
    sigprocmask(SIG_UNBLOCK, &set, &oldset);
    if(sigismember(&oldset, 2)){
        printf("2号信号在掩码中被设置了阻塞 \n");
    }
    if(sigismember(&oldset, 3)){
        printf("3号信号在掩码中被设置了阻塞 \n");
    }

    printf("signal %d over \n", num);
}
int main(){
    signal(2, func);

    while(1);
    return 0;
}
